if (strfield(mov_url,"ftp://")) { // ftp, ok on arrΩte
has_been_moved = 1;
back_delete(back,b); // ok
strcpybuff(curr_adr,mov_adr);
strcpybuff(curr_fil,mov_fil);
} else if (*mov_url) {
char* methode;
if (!get_test_request)
methode=BACK_ADD_TEST; // tester avec HEAD
else {
methode=BACK_ADD_TEST2; // tester avec GET
if ( opt->errlog!=NULL ) {
fspc(opt->errlog,"warning"); fprintf(opt->errlog,"Loop with HEAD request (during prefetch) at %s%s"LF,curr_adr,curr_fil);
test_flush;
}
}
// Ajouter
if (back_add(back,back_max,opt,cache,mov_adr,mov_fil,methode,referer_adr,referer_fil,1,NULL)!=-1) { // OK
if ( (opt->debug>1) && (opt->errlog!=NULL) ) {
fspc(opt->errlog,"warning"); fprintf(opt->errlog,"(during prefetch) %s (%d) to link %s at %s%s"LF,back[b].r.msg,back[b].r.statuscode,back[b].r.location,curr_adr,curr_fil);
test_flush;
}
// libΘrer emplacement backing actuel et attendre le prochain
has_been_moved = 1; // sinon ne pas forcer has_been_moved car non dΘplacΘ
petits_tours++;
//
} else {// sinon on fait rien et on s'en va.. (ftp etc)
if ( (opt->debug>1) && (opt->errlog)) {
fspc(opt->errlog,"debug"); fprintf(opt->errlog,"Warning: Savename redirect backing error at %s%s"LF,mov_adr,mov_fil);
test_flush;
}
}
}
} else {
if ( opt->errlog!=NULL ) {
fspc(opt->errlog,"warning"); fprintf(opt->errlog,"Unable to test %s%s (loop to same filename)"LF,adr_complete,fil_complete);
test_flush;
}
}
}
}
} else{ // arrΩter les frais
if ( opt->errlog!=NULL ) {
fspc(opt->errlog,"warning"); fprintf(opt->errlog,"Unable to test %s%s (loop)"LF,adr_complete,fil_complete);
test_flush;
}
}
} // ok, leaving
}
} while(back[b].status>0);
// Si non dΘplacΘ, forcer type?
if (!has_been_moved) {
if (back[b].r.statuscode!=-10) { // erreur
if (strnotempty(back[b].r.contenttype)==0)
strcpybuff(back[b].r.contenttype,"text/html"); // message d'erreur en html
// Finalement on, renvoie un erreur, pour ne toucher α rien dans le code
// libΘrer emplacement backing
/*if (opt->errlog!=NULL) {
fspc(opt->errlog,0); fprintf(opt->errlog,"Error: (during prefetch) %s (%d) to link %s at %s%s"LF,back[b].r.msg,back[b].r.statuscode,back[b].r.location,curr_adr,curr_fil);
test_flush;
}
back_delete(back,b);
return -1; // ERREUR (404 par exemple)
*/
}
{ // pas d'erreur, changer type?
char s[16];
s[0]='\0';
if (strnotempty(back[b].r.cdispo)) { /* filename given */
ext_chg=2; /* change filename */
strcpybuff(ext,back[b].r.cdispo);
}
else if (!may_unknown(back[b].r.contenttype) || ishtest == -2 ) { // on peut patcher α priori? (pas interdit ou pas de type)